package br.com.cnpv.managebean.veiculo;

import java.util.ArrayList;

import javax.faces.application.FacesMessage;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.SessionScoped;
import javax.faces.context.FacesContext;

import br.com.cnpv.modelo.bo.CombustivelBO;
import br.com.cnpv.modelo.bo.EstadoBO;
import br.com.cnpv.modelo.bo.MarcaBO;
import br.com.cnpv.modelo.bo.ModeloBO;
import br.com.cnpv.modelo.bo.TipoVeiculoBO;
import br.com.cnpv.modelo.bo.VeiculoBO;
import br.com.cnpv.modelo.entity.Modelo;
import br.com.cnpv.modelo.entity.Veiculo;

@ManagedBean(name="veiculoMB")
@SessionScoped
public class VeiculoMB extends VeiculoBean{

	public String paginaNovo()
	{
		try
		{
			veiculo = new Veiculo();

			// bo
			TipoVeiculoBO tipoVeiculoBO = TipoVeiculoBO.getInstance();
			EstadoBO estadoBO = EstadoBO.getInstance();
			CombustivelBO combustivelBO = CombustivelBO.getInstance();

			// listas
			tipoVeiculoList = tipoVeiculoBO.listar();
			estadoList = estadoBO.listar();
			combustivelList = combustivelBO.listar();


		}catch(Exception e)
		{
			e.printStackTrace();
		}

		return "pretty:paginaNovo";
	}

	public String paginaBusca() {

		try
		{

			//BO
			VeiculoBO veiculoBO = VeiculoBO.getInstance();

			veiculo = new Veiculo();

			veiculoList = veiculoBO.listar();


		}catch(Exception e)
		{
			FacesMessage message = new FacesMessage(FacesMessage.SEVERITY_FATAL, "", "Ocorreu um erro. Tente mais tarde");
			FacesContext.getCurrentInstance().addMessage(null, message);
			e.printStackTrace();
		}

		return "pretty:veiculo";
	}

	public void buscar()
	{
		try
		{
			//BO
			VeiculoBO veiculoBO = VeiculoBO.getInstance();

			veiculoList = veiculoBO.buscar(veiculo);
		}catch(Exception e)
		{
			FacesMessage message = new FacesMessage(FacesMessage.SEVERITY_FATAL, "", "Ocorreu um erro. Tente mais tarde");
			FacesContext.getCurrentInstance().addMessage(null, message);
			e.printStackTrace();
		}
	}
	
	public void listaModelos()
	{
		try
		{
			//bo
			ModeloBO modeloBO = ModeloBO.getInstance();
			
			modeloList = modeloBO.listarPorMarca(idMarca);
		}catch(Exception e)
		{
			e.printStackTrace();
		}
	}
	
	public void listaMarcas()
	{
		try
		{
			MarcaBO marcaBO = MarcaBO.getInstance();
			
			marcaList = marcaBO.listarPorTipo(veiculo.getIdTipoVeiculo());
			modeloList = new ArrayList<Modelo>();
		}catch(Exception e)
		{
			e.printStackTrace();
		}
	}



	public String paginaAlterar()
	{
		try
		{
			// bo
			TipoVeiculoBO tipoVeiculoBO = TipoVeiculoBO.getInstance();
			EstadoBO estadoBO = EstadoBO.getInstance();
			CombustivelBO combustivelBO = CombustivelBO.getInstance();
			MarcaBO marcaBO = MarcaBO.getInstance();

			veiculo = veiculoSelecionado;

			
			tipoVeiculoList = tipoVeiculoBO.listar();
			estadoList = estadoBO.listar();
			combustivelList = combustivelBO.listar();
			marcaList = marcaBO.listar();

		}catch(Exception e)
		{
			e.printStackTrace();
		}

		return "pretty:alterarVeiculo";
	}

}
